/*
 * @lc app=leetcode.cn id=530 lang=java
 *
 * [530] 二叉搜索树的最小绝对差
 *
 * https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/description/
 *
 * algorithms
 * Easy (54.75%)
 * Likes:    81
 * Dislikes: 0
 * Total Accepted:    8K
 * Total Submissions: 14.6K
 * Testcase Example:  '[1,null,3,2]'
 *
 * 给定一个所有节点为非负值的二叉搜索树，求树中任意两节点的差的绝对值的最小值。
 *
 * 示例 :
 *
 *
 * 输入:
 *
 * ⁠  1
 * ⁠   \
 * ⁠    3
 * ⁠   /
 * ⁠  2
 *
 * 输出:
 * 1
 *
 * 解释:
 * 最小绝对差为1，其中 2 和 1 的差的绝对值为 1（或者 2 和 3）。
 *
 *
 * 注意: 树中至少有2个节点。
 *
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    int lastNum = -1;
    int cha = Integer.MAX_VALUE;
    public int getMinimumDifference(TreeNode root) {
        fun(root);
        return cha;
    }

    void fun(TreeNode root) {
        if(root == null) {
            return;
        }
        fun(root.left);
        if(lastNum != -1 && root.val - lastNum < cha) {
            cha = root.val - lastNum;
        }
        lastNum = root.val;
        fun(root.right);
    }

}
// @lc code=end

